Data storage systems are arrangements of hardware and software that include one or more storage processors coupled to arrays of non-volatile storage devices. The storage processors service storage requests, arriving from host machines (“hosts”), which specify files or other data elements to be written, read, created, or deleted, for example. Software running on the storage processors manages incoming storage requests and performs various data processing tasks to organize and secure the data elements stored on the non-volatile storage devices.
Data storage systems may include RAID groups for providing non-volatile storage. RAID is an acronym for Redundant Array of Independent (or “Inexpensive”) Disks. Each RAID group typically includes multiple disk drives of a common type (e.g., magnetic disk drives, solid state drives, optical drives, etc.). RAID groups can be arranged in accordance with various schemes, as indicated by RAID number. Certain RAID schemes provide redundant data storage, either in the form of mirroring (e.g., RAID 1) or in the form of parity (e.g., RAID 5 and RAID 6). RAID 5 provides single parity, meaning that a RAID 5 group can suffer the loss of any one disk drive without losing data. RAID 6 provides double parity, meaning that a RAID 6 group can suffer the loss of any two disk drives without losing data.
Data storage systems often include spare disk drives. When a failure occurs in a disk drive of a RAID group, a data storage system may logically replace the failed drive with a spare and proceed to rebuild data onto the spare to match the data previously stored on the failed drive. For example, the data storage system may read the other disk drives in the RAID group, compute repair data for the spare based on the data read from the other drives, and write the computed data to the spare drive. Rebuilding the repair data onto the spare drive has the effect of restoring the RAID group to its original level of redundancy.